package com.zrrd.learn.JulyLearn.FirstWeek;

import java.util.Scanner;

/**
 * J1908第3周笔试考试编程题 4题
 *
 * @author wrn
 * @version 1.0
 * @date 2023/7/12 9:57
 */

/**
 * 4.某个公司采用公用电话传递数据信息，数据是小于8位的整数，为了确保安全，
 * 在传递过程中需要加密，加密规则如
 *
 * 下：首先将数据倒序，然后将每位数字都加上5，再用和除以10的余数代替该数字，
 * 最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数，
 * 然后，把加密后的结果在控制台打印出来。
 *       题目要求：A:数据是小于8位的整数
 *                  定义一个int类型的数据
 *                  int number = 123456
 *                 B:加密规则
 *                 	a:首先将数据倒序
 *                     结果 654321
 * b:然后将每位数字都加上5，再用和除以10的余数代替该数字
 *                     结果 109876
 *             		c:最后将第一位和最后一位数字交换
 *                     结果 609871
 * 		       C:把加密后的结果输出在控制台
 */
public class Learn02 {

    /**
     * 方法1
     * @param number
     * @return
     */
    public static int[] addCode(int number) {
        int index = 0;
        int[] arr = new int[8];
        int i = 0;
        while(number>0) {
            arr[i] = number%10;
            i++;
            number /= 10;
        }
        index = i;
        int[] arr2 = new int[index+1];
        for(int start=0, end=index; start<end; start++, end--) {
            int temp = arr[start];
            arr[start] = arr[end-start];
            arr[end-start] = temp;
        }
        for(i=0; i<index+1; i++) {
            arr[i] += 5;
            arr[i] %= 10;
        }
        int temp = arr[0];
        arr[0] = arr[index];
        arr[index] = arr[0];

        for(i=0; i<index; i++) {
            arr2[index-i] = arr[i];
        }
        return arr2;
    }
    public static void printCode(int[] arr) {
        for(int i=1; i<arr.length; i++) {
            System.out.print(arr[i]);
        }
        System.out.println();
    }

    /**
     * 方法二
     * @param x
     */
    public static void question(int x){
        if (x<9||x>Math.pow(10,7)){
            throw new RuntimeException("对不起不是8位");
        }
        String xstr = String.valueOf(x);
        StringBuilder stringBuilder = new StringBuilder(xstr);
        String strnew = stringBuilder.reverse().toString();

        StringBuilder restr = new StringBuilder();
        for (int i = 0; i < strnew.length(); i++) {
            int temp = Integer.valueOf(strnew.substring(i,i+1));
            restr.append((temp+5)%10);
        }
        restr.append(restr.charAt(0));
        restr.delete(0,1);
        restr.insert(0,restr.charAt(restr.length()-2));
        restr.delete(restr.length()-2,restr.length()-1);
        System.out.println(restr);
    }



        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            while(true) {
                System.out.println("输入范围：1到9999999，按0退出");
                int a = sc.nextInt();
                if(a == 0) {
                    System.exit(0);
                }else if(a<0 || a>9999999) {
                    System.out.println("输入错误，在1到9999999之间，按0退出");
                }else {
                    printCode(addCode(a));
                }
            }
        }



}
